package net.uhuijia.goods.skupropertyvalue.service.impl;

import net.uhuijia.constants.DBConst;
import net.uhuijia.enums.ErrorCodeEnum;
import net.uhuijia.exception.BusinessException;
import net.uhuijia.vo.good.GoodSkuValueVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import net.uhuijia.appbase.service.CrudService;
import net.uhuijia.goods.skupropertyvalue.persistence.dao.SkuPropertyValueDao;
import net.uhuijia.goods.skupropertyvalue.persistence.model.SkuPropertyValue;
import net.uhuijia.goods.skupropertyvalue.persistence.model.SkuPropertyValueExample;
import net.uhuijia.goods.skupropertyvalue.persistence.model.SkuPropertyValueExample.Criteria;
import net.uhuijia.goods.skupropertyvalue.service.SkuPropertyValueService;

import java.util.ArrayList;
import java.util.List;


@Service
@Transactional
public class SkuPropertyValueServiceImpl
     extends CrudService<SkuPropertyValueDao,SkuPropertyValue,SkuPropertyValueExample>
     implements  SkuPropertyValueService {
    /**
     * @Author xzj
     * @Description //根据skuPropertyNameId 查询商品属性值集合
     * @Date  2018/10/6
     * @Param
     * @return
     **/
    @Override
    public List<SkuPropertyValue> findSkuPropertyValueBySkuPropertyNameId(String skuPropertyNameId) {
        SkuPropertyValueExample example = new SkuPropertyValueExample();
        Criteria criteria = example.createCriteria();
        criteria.andIsEffectiveEqualTo(DBConst.TRUE);
        criteria.andPropertyNameIdEqualTo(skuPropertyNameId);
        List<SkuPropertyValue> skuPropertyValues = this.list(example);
        return skuPropertyValues;
    }
    /**
     * @Author xzj
     * @Description // 查询商品属性值集合  并转换成GoodSkuValueVo
     * @Date  2018/10/6
     * @Param
     * @return
     **/
    @Override
    public List<GoodSkuValueVo> findGoodSkuValueVoBySkuPropertyNameId(String skuPropertyNameId) {
        if(StringUtils.isEmpty(skuPropertyNameId))
            throw  new IllegalArgumentException();
        List<GoodSkuValueVo> goodSkuValueVos = new ArrayList<>();
        List<SkuPropertyValue> skuPropertyValues = this.findSkuPropertyValueBySkuPropertyNameId(skuPropertyNameId);
        if(!skuPropertyValues.isEmpty()){
            for(SkuPropertyValue skuPropertyValue : skuPropertyValues){
                GoodSkuValueVo goodSkuValueVo = this.SkuPropertyValueWrapToGoodSkuValueVo(skuPropertyValue);
                goodSkuValueVos.add(goodSkuValueVo);
            }
        }else{
            throw  new BusinessException(ErrorCodeEnum.sku_property_value_is_not_exist);
        }
        return goodSkuValueVos;
    }

    /**
     * @Author xzj
     * @Description //将SkuPropertyValue 转换成 GoodSkuValueVo
     * @Date  2018/10/6
     * @Param
     * @return
     **/
    public GoodSkuValueVo SkuPropertyValueWrapToGoodSkuValueVo(SkuPropertyValue skuPropertyValue){
        GoodSkuValueVo goodSkuValueVo = new GoodSkuValueVo();
        goodSkuValueVo.setName(skuPropertyValue.getPropertyValue());
        goodSkuValueVo.setSkuValueId(skuPropertyValue.getId());
        return goodSkuValueVo;
    }
}